//
//  OrderTaxi.m
//  NZTaxi
//
//  Created by Allan Vergara on 8/09/10.
//  Copyright 2010 List-it. All rights reserved.
//

#import "OrderTaxi.h"
#import "OrderTaxiTVC.h"
#import "NZTaxiAppDelegate.h"
#import "BookingController.h"
#import "Registration.h"
#import "CitySelector.h"
#import "Address.h"

@implementation OrderTaxi

uint const C_STANDARD_FARE = 0;
uint const C_TAXI_CODE     = 1;
uint const C_SET_HOME      = 2;

#pragma mark -
#pragma mark View lifecycle

- (void)AddressChanged:(NSNotification *)notification {
	/* if this is called, then the user is setting the home address */
	
	// pop me
	[self.navigationController popToViewController:self animated:YES];
	
	// unregister for notification
	[[NSNotificationCenter defaultCenter] removeObserver:self];
	
	Address *address = [notification object];
	
	if (address != NULL) 
	{
		// pre set address object
		NSUserDefaults *preps = [NSUserDefaults standardUserDefaults];
		
		[preps setObject:address.houseNumber forKey:C_HOME_HOUSE_NUMBER];
		[preps setObject:address.street forKey:C_HOME_STREET];
		[preps setObject:address.suburb forKey:C_HOME_SUBURB];
		[preps setObject:address.city forKey:C_HOME_CITY];
	}
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}


/*
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
}
*/

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
	self.navigationItem.title = @"Menu";
}

/*
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
}
*/
/*
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/


#pragma mark -
#pragma mark Table view data source
/*
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}
*/

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return 3; 
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"OrderTaxiTVC";
	
	OrderTaxiTVC *cell = (OrderTaxiTVC *)
		[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (cell == nil) {
		//cell = [[OrderTaxiTableViewCell alloc] init];
		// Load the top-level objects from the custom cell XIB.
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"OrderTaxiTVC" 
																 owner:self options:nil];
		// Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain).
		cell = [topLevelObjects objectAtIndex:0];
    }
	
	NSString *imgSource;
	NSString *menuItemLabel;
	
	if (indexPath.row == C_STANDARD_FARE) {
		imgSource = [[NSBundle mainBundle] pathForResource:@"star_full" ofType:@"png"];
		menuItemLabel = @"Book Now";
	}
	else if (indexPath.row == C_TAXI_CODE) {
		imgSource = [[NSBundle mainBundle] pathForResource:@"wired" ofType:@"png"];
		menuItemLabel = @"Register";	
	}
	else if (indexPath.row == C_SET_HOME) {
		imgSource = [[NSBundle mainBundle] pathForResource:@"twitter" ofType:@"png"];
		menuItemLabel = @"Set Home Address";	
	}
	
	cell.imageView.image = [UIImage imageWithContentsOfFile:imgSource];
	cell.labelMenuItem.text = menuItemLabel;
	
    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 75;
}

/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/


/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}
*/


/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
}
*/


/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
*/


#pragma mark -
#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic may go here. Create and push another view controller.
    UIViewController *controller;
	
	if (indexPath.row == C_STANDARD_FARE) {
		controller  = [[BookingController alloc] initWithNibName:@"BookingController" bundle:nil];
	}
	else if (indexPath.row == C_TAXI_CODE) {
		controller = [[Registration alloc] initWithNibName:@"Registration" bundle:nil];
	}
	else if (indexPath.row == C_SET_HOME) {
		controller = [[CitySelector alloc] initWithNibName:@"CitySelector" bundle:nil];
		
		// register for notification
		[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AddressChanged:)
			name:C_NOTIFY_ADDRESS_CHANGE object:nil];
	}
	
	[self.navigationController pushViewController:controller animated:YES];
	[controller release];
}


#pragma mark -
#pragma mark Memory management

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Relinquish ownership any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
    // For example: self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}


@end

